Passed
Pull Request — master (#436)
by
unknown
02:43
created

MattermostNotifier   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 64
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 51
dl 0
loc 64
rs 10
c 0
b 0
f 0

3 Functions

Rating   Name   Duplication   Size   Complexity  
A createPost 0 21 2
A createComment 0 7 1
A createReaction 0 26 2
1
import { HttpService } from '@nestjs/axios';
2
import { BadGatewayException, Injectable } from '@nestjs/common';
3
import { ConfigService } from '@nestjs/config';
4
import { IMattermostNotifier } from 'src/Application/IMattermostNotifier';
5
6
@Injectable()
7
export class MattermostNotifier implements IMattermostNotifier {
8
  constructor(
9
    private readonly configService: ConfigService,
10
    private readonly httpService: HttpService
11
  ) {}
12
13
  public async createPost(channelId: string, message: string): Promise<object> {
14
    try {
15
      const response = await this.httpService.axiosRef.post(
16
        `${this.configService.get<string>('MATTERMOST_API_URL')}/posts`,
17
        {
18
          channel_id: channelId,
19
          message
20
        },
21
        {
22
          headers: {
23
            Authorization: `Bearer ${this.configService.get<string>(
24
              'MATTERMOST_ALFRED_TOKEN'
25
            )}`
26
          }
27
        }
28
      );
29
30
      return response.data;
31
    } catch (e) {
32
      throw BadGatewayException;
33
    }
34
  }
35
36
  public async createComment(
37
    channelId: string,
38
    message: string,
39
    rootId: string
40
  ): Promise<object> {
41
    return {};
42
  }
43
44
  public async createReaction(
45
    postId: string,
46
    emojiName: string
47
  ): Promise<object> {
48
    // ded6nfbsejdp7cj4mkwyeknuna
49
    try {
50
      const response = await this.httpService.axiosRef.post(
51
        `${this.configService.get<string>('MATTERMOST_API_URL')}/reactions`,
52
        {
53
          post_id: postId,
54
          emoji_name: emojiName,
55
          user_id: this.configService.get<string>('MATTERMOST_ALFRED_USER_ID')
56
        },
57
        {
58
          headers: {
59
            Authorization: `Bearer ${this.configService.get<string>(
60
              'MATTERMOST_ALFRED_TOKEN'
61
            )}`
62
          }
63
        }
64
      );
65
66
      return response.data;
67
    } catch (e) {
68
      throw BadGatewayException;
69
    }
70
  }
71
}
72